package br.com.honorato.util;

import java.text.MessageFormat;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

import javax.faces.context.FacesContext;

public class Util
{
	/**
	 * 
	 * @param key
	 *           Tipo: String | codigo a ser recuperado do resourcebundle
	 * @param params
	 *           Tipo: String[] | Array de String lista de parametros a serem
	 *           utilizadas na mensagem da chave
	 * @param fileNane
	 *           Tipo: String | Nome do arquivo de resourcebundle a ser lido,
	 *           caso seja informado null usara o arquivo "messages" como default
	 * @return String resultante da recupercao do resourcebundle
	 * @author Marcelo Honorato
	 */

	public static final String FILE_NAME_DEFAULT = "messages";
	public static final String FILE_NAME_ERRO = "erros";

	public static String getMsgBundle(String key, String[] params, String fileNane)
	{
		String msgReturn = "";

		if (fileNane == null)
		{
			fileNane = FILE_NAME_DEFAULT;
		}

		try
		{
			FacesContext facesContext = FacesContext.getCurrentInstance();
			Locale locale = facesContext.getViewRoot().getLocale();

			ResourceBundle rBundle = ResourceBundle.getBundle(fileNane, locale);
			msgReturn = rBundle.getString(key);

			if (params != null)
			{
				MessageFormat formatter = new MessageFormat(msgReturn, rBundle.getLocale());
				msgReturn = formatter.format(params);
			}
		}
		catch (MissingResourceException e)
		{
			// TODO logar erro
		}

		return msgReturn;
	}

	/**
	 * 
	 * @param key
	 *           Tipo: String | codigo a ser recuperado do resourcebundle
	 * @return String resultante da recuperacao do resourcebundle
	 * @author Marcelo Honorato
	 */
	public static String getMessage(String key, String... params)
	{
		return getMsgBundle(key, params, null);
	}

	public static String getErroMessage(String key, String... params)
	{
		return getMsgBundle(key, params, Util.FILE_NAME_ERRO);
	}

}